1 module deimos.basetsd; 2 3 alias __int64 = long; 4 5 version (Win32) 6 { 7 alias __int3264 = int; 8 immutable uint ADDRESS_TAG_BIT = 0x80000000; 9 } 10 else 11 { 12 alias __int3264 = long; 13 immutable ulong ADDRESS_TAG_BIT = 0x40000000000; 14 } 15 16 alias INT8 = byte; 17 alias INT16 = short; 18 alias LONG32 = int; 19 alias PLONG32 = int*; 20 alias INT32 = int; 21 alias PINT32 = int*; 22 alias UINT8 = ubyte; 23 alias UINT16 = ushort; 24 alias ULONG32 = uint; 25 alias PULONG32 = uint*; 26 alias DWORD32 = uint; 27 alias PDWORD32 = uint*; 28 alias UINT32 = uint; 29 alias PUINT32 = uint*; 30 31 version(Win32) 32 { 33 alias INT_PTR = int; 34 alias PINT_PTR = int*; 35 alias UINT_PTR = uint; 36 alias PUINT_PTR = uint*; 37 alias LONG_PTR = int; 38 alias PLONG_PTR = int*; 39 alias ULONG_PTR = uint; 40 alias PULONG_PTR = uint*; 41 alias UHALF_PTR = ushort; 42 alias PUHALF_PTR = ushort*; 43 alias HALF_PTR = short; 44 alias PHALF_PTR = short*; 45 alias HANDLE_PTR = uint; 46 47 uint HandleToUlong(const void* h) 48 { return(cast(uint)h); } 49 int HandleToLong(const void* h) 50 { return(cast(int)h); } 51 void* LongToHandle(const int h) 52 { return(cast(void*)h);} 53 uint PtrToUlong(const void* p) 54 { return(cast(uint) p); } 55 int PtrToLong(const void* p) 56 { return(cast(int) p); } 57 uint PtrToUint(const void* p) 58 { return(cast(uint) p); } 59 int PtrToInt(const void* p) 60 { return(cast(int) p); } 61 ushort PtrToUshort(const void* p) 62 { return(cast(ushort) cast(uint) p);} 63 short PtrToShort(const void* p) 64 { return(cast(short) cast(uint) p);} 65 void* IntToPtr(const int i) 66 { return(cast(void*)i); } 67 void* UIntToPtr(const uint ui) 68 { return(cast(void*)ui); } 69 alias UintToPtr = UIntToPtr; 70 void* LongToPtr(const int l) 71 { return(cast(void*)l); } 72 void* ULongToPtr(const uint ul) 73 { return(cast(void*)ul); } 74 alias UlongToPtr = ULongToPtr; 75 } 76 else 77 { 78 alias INT_PTR = long; 79 alias PINT_PTR = long*; 80 alias UINT_PTR = ulong; 81 alias PUINT_PTR = ulong*; 82 alias LONG_PTR = long; 83 alias PLONG_PTR = long*; 84 alias ULONG_PTR = ulong; 85 alias PULONG_PTR = ulong*; 86 alias HANDLE_PTR = ulong*; 87 alias UHALF_PTR = uint; 88 alias PUHALF_PTR = uint*; 89 alias HALF_PTR = int; 90 alias PHALF_PTR = int*; 91 92 version(none) 93 { 94 /* TODO when WIN64 is here */ 95 ulong HandleToUlong(const void* h ) 96 { return(cast(ulong) h ); } 97 long HandleToLong( const void* h ) 98 { return(cast(long) h ); } 99 void* LongToHandle( const long h ) 100 { return(cast(void*) cast(INT_PTR) h ); } 101 ulong PtrToUlong( const void* p) 102 { return(cast(ulong) p ); } 103 uint PtrToUint( const void* p ) 104 { return(cast(uint) p ); } 105 ushort PtrToUshort( const void* p ) 106 { return(cast(ushort) p ); } 107 long PtrToLong( const void* p ) 108 { return(cast(long) p ); } 109 int PtrToInt( const void* p ) 110 { return(cast(int) p ); } 111 short PtrToShort( const void* p ) 112 { return(cast(short) p ); } 113 void* IntToPtr( const int i ) 114 { return( cast(void*) cast(INT_PTR)i ); } 115 void* UIntToPtr(const uint ui) 116 { return( cast(void*) cast(UINT_PTR)ui ); } 117 void* LongToPtr( const long l ) 118 { return( cast(void*) cast(LONG_PTR)l ); } 119 void* ULongToPtr( const ulong ul ) 120 { return( cast(void*) cast(ULONG_PTR)ul ); } 121 } 122 } 123 124 alias SIZE_T = ULONG_PTR; 125 alias PSIZE_T = PULONG_PTR; 126 alias SSIZE_T = LONG_PTR; 127 alias PSSIZE_T = PLONG_PTR; 128 alias DWORD_PTR = ULONG_PTR; 129 alias PDWORD_PTR = PULONG_PTR; 130 alias LONG64 = long; 131 alias PLONG64 = long*; 132 alias INT64 = long; 133 alias PINT64 = long*; 134 alias ULONG64 = ulong; 135 alias PULONG64 = ulong*; 136 alias DWORD64 = ulong; 137 alias PDWORD64 = ulong*; 138 alias UINT64 = ulong; 139 alias PUINT64 = ulong*; 140 141 immutable MAXUINT_PTR = uint.max; 142 immutable MAXINT_PTR = int.max; 143 immutable MININT_PTR = int.min; 144 immutable MAXUHALF_PTR = ushort.max; 145 immutable MAXHALF_PTR = short.max; 146 immutable MINHALF_PTR = short.min; 147 148 version(Win32) 149 { 150 immutable MAXULONG_PTR = uint.max; 151 immutable MAXLONG_PTR = int.max; 152 immutable MINLONG_PTR = int.min; 153 } 154 else 155 { 156 immutable MAXULONG_PTR = ulong.max; 157 immutable MAXLONG_PTR = long.max; 158 immutable MINLONG_PTR = long.min; 159 }